package com.ylbh.modules.activity.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.ylbh.common.pojo.activity.dto.ActivityGoodsDTO;
import com.ylbh.common.pojo.activity.dto.BatchPurchaseGoodsDTO;
import com.ylbh.common.pojo.activity.dto.GoodsListDTO;
import com.ylbh.common.pojo.goods.dto.GoodsClassDTO;
import com.ylbh.common.pojo.goods.dto.SubGoodsClassDTO;
import com.ylbh.common.utils.PageDTO;
import com.ylbh.common.utils.PageUtils;

import java.util.List;

/**
 * 商品信息
 *
 * @author mgh
 * @date 2019-04-22 15:25:57
 */
public interface ActivityGoodsService extends IService<GoodsClassDTO> {

    /**
     * 获取分类列表
     * @return
     */
    List<GoodsClassDTO> queryClassList();

    /**
     * 获取商品列表
     * @return
     */
    PageUtils queryGoodsList(GoodsListDTO goodsListDTO);

    /**
     * 通过id获取活动商品
     * @param id
     * @return
     */
    ActivityGoodsDTO getActivityGoodsById(Integer id);

    /**
     * 添加批量采购商品
     * @param batchPurchaseGoodsDTO
     */
    void addBatchPurchaseGoods(BatchPurchaseGoodsDTO batchPurchaseGoodsDTO);

    /**
     * 获取批量采购商品列表
     * @param goodsListDTO
     * @return
     */
    PageUtils queryBatchPurchaseGoodsList(GoodsListDTO goodsListDTO);

    /**
     * 移除批量采购商品
     * @param ids
     */
    void removeBatchPurchaseGoods(Integer[] ids);

    /**
     * 采购一级分类列表
     * @param dto
     * @return
     */
    PageUtils queryPurchaseLargeClass(PageDTO dto);

    /**
     * 新增采购一级分类
     * @param subGoodsClassDTO
     */
    void addPurchaseLargeClass(SubGoodsClassDTO subGoodsClassDTO);

    /**
     * 修改采购一级分类
     * @param subGoodsClassDTO
     */
    void modifyPurchaseLargeClass(SubGoodsClassDTO subGoodsClassDTO);

    /**
     * 删除采购一级分类
     * @param id
     */
    void removePurchaseLargeClass(List<Integer> id);

    /**
     * 采购分类显示与隐藏
     * @param id
     * @param display
     */
    void modifyDisplayById(Integer id, Integer display);

    /**
     * 查看分类详情
     * @param id
     */
    SubGoodsClassDTO getPurchaseLargeClassById(Integer id);

    /**
     * 采购二级分类列表
     * @param dto
     * @return
     */
    PageUtils queryPurchaseSecondLevelClass(PageDTO dto);

    /**
     * 获取采购分类
     * @return
     */
    List<GoodsClassDTO> queryPurchaseClassList();

    /**
     * 根据批采分类查询出下级未添加过的商品列表
     * @param dto
     * @return
     */
    PageUtils queryLevelClassGoodsList(GoodsListDTO dto);

    /**
     * 添加商品到采购分类
     * @param classId
     * @param goodsList
     */
    void addPurchaseGoods(Integer classId, List<String> goodsList);

    /**
     * 根据采购分类查询商品列表
     * @param dto
     * @return
     */
    PageUtils queryPurchaseGoods(GoodsListDTO dto);

    /**
     * 删除批采分类下的商品
     * @param classId
     * @param goodsId
     */
    void removePurchaseClassGoodsByClassAndGoodsId(String classId, String goodsId);

}

